package com.cloudcc.cloudframe.util;

import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.view.View;
import android.widget.Toast;

import java.io.File;

/**
 * Created by lin on 2017/5/11.
 */

public class NearByUtil {

    // 穿件带字母的标记图片
    public static Bitmap createDrawable(String number, Bitmap bgbitmap, int colorId, Context context) {
        int width, height;   //图片的高度和宽带
        width = bgbitmap.getWidth();
        height = bgbitmap.getHeight();
        Bitmap imgTemp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(imgTemp);
        Paint paint = new Paint(); // 建立画笔
        paint.setDither(true);
        paint.setFilterBitmap(true);
        Rect src = new Rect(0, 0, width, height);
        Rect dst = new Rect(0, 0, width, height);
        canvas.drawBitmap(bgbitmap, src, dst, paint);

        Paint textPaint = new Paint(Paint.ANTI_ALIAS_FLAG
                | Paint.DEV_KERN_TEXT_FLAG);
        textPaint.setTextSize(25.0f);
        textPaint.setTypeface(Typeface.DEFAULT_BOLD); // 采用默认的宽度
        textPaint.setColor(context.getResources().getColor(colorId));

        canvas.drawText(number, width / 2 - 5, height / 2,
                textPaint);
//        canvas.save(Canvas.ALL_SAVE_FLAG);
        canvas.save();
        canvas.restore();
        return imgTemp;

    }

    /**
     * 启动高德地图导航
     *
     * @param sourceApplication 必填 第三方调用应用名称。如 amap
     * @param poiname           非必填 POI 名称
     * @param lat               必填 纬度
     * @param lon               必填 经度
     * @param dev               必填 是否偏移(0:lat 和 lon 是已经加密后的,不需要国测加密; 1:需要国测加密)
     * @param style             必填 导航方式(0 速度快; 1 费用少; 2 路程短; 3 不走高速；4 躲避拥堵；5 不走高速且避免收费；6 不走高速且躲避拥堵；7 躲避收费和拥堵；8 不走高速躲避收费和拥堵))
     */
    public static void startGaode(String lat, String lon, Context context) {
        StringBuffer stringBuffer = new StringBuffer("androidamap://navi?sourceApplication=")
                .append("CloudCC");
        stringBuffer.append("&lat=").append(lat)
                .append("&lon=").append(lon)
                .append("&dev=").append(0)
                .append("&style=").append(0);

        Intent intent = new Intent("android.intent.action.VIEW", android.net.Uri.parse(stringBuffer.toString()));
        intent.setPackage("com.autonavi.minimap");
        context.startActivity(intent);
    }

    //判断是否安装程序
    public static boolean isInstallByRead(String packageName) {
        return new File("/data/data/" + packageName).exists();
    }


    //启动百度地图导航
    public static void startBaiduMap(String lat, String lon, Context context) {
        StringBuffer stringBuffer = new StringBuffer("baidumap://map/navi?location=")
                .append(lat + "," + lon);
        Intent intent = new Intent("android.intent.action.VIEW", android.net.Uri.parse(stringBuffer.toString()));
        if (isInstallByRead("com.baidu.BaiduMap")) {
            context.startActivity(intent); //启动调用
        } else {
            Toast.makeText(context, "您尚未安装百度地图或地图版本过低", Toast.LENGTH_SHORT).show();
        }

    }

    // 180度旋转动画
    public static void startPropertyAnim(View view) {
        // 第二个参数"rotation"表明要执行旋转
        // 0f -> 360f，从旋转360度，也可以是负值，负值即为逆时针旋转，正值是顺时针旋转。
        ObjectAnimator anim = ObjectAnimator.ofFloat(view, "rotation", 0f, 180f);

        // 动画的持续时间，执行多久？
        anim.setDuration(300);

        // 正式开始启动执行动画
        anim.start();
    }

    // 180度旋转动画--逆转
    public static void startPropertyAnim2(View view) {
        // 第二个参数"rotation"表明要执行旋转
        // 0f -> 360f，从旋转360度，也可以是负值，负值即为逆时针旋转，正值是顺时针旋转。
        ObjectAnimator anim = ObjectAnimator.ofFloat(view, "rotation", 180f, 0f);

        // 动画的持续时间，执行多久？
        anim.setDuration(300);

        // 正式开始启动执行动画
        anim.start();
    }
    //  45
    public static void startPropertyAnim45(View view) {
        // 第二个参数"rotation"表明要执行旋转
        // 0f -> 360f，从旋转360度，也可以是负值，负值即为逆时针旋转，正值是顺时针旋转。
        ObjectAnimator anim = ObjectAnimator.ofFloat(view, "rotation", 0f, 45f);

        // 动画的持续时间，执行多久？
        anim.setDuration(200);

        // 正式开始启动执行动画
        anim.start();
    }

    public static void startPropertyAnim00(View view) {
        // 第二个参数"rotation"表明要执行旋转
        // 0f -> 360f，从旋转360度，也可以是负值，负值即为逆时针旋转，正值是顺时针旋转。
        ObjectAnimator anim = ObjectAnimator.ofFloat(view, "rotation", 45f, 0f);

        // 动画的持续时间，执行多久？
        anim.setDuration(200);

        // 正式开始启动执行动画
        anim.start();
    }


    public static int getStatusBarHeight(Context context) {
        /**
         * 获取状态栏高度——方法1
         * */
        int statusBarHeight1 = -1;
        //获取status_bar_height资源的ID
        int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            //根据资源ID获取响应的尺寸值
            statusBarHeight1 = context.getResources().getDimensionPixelSize(resourceId);
        }
        return statusBarHeight1;
    }

}
